Conventional methods exist for accessing files stored on a network-connected storage system which offers tiered storage areas. One conventional method of file system access (I/O) is disclosed in Palevich, et al. (U.S. Pat. No. 7,441,012). Palevich, et al. discloses a file system that combines efficient caching and buffering to provide a network file system that utilizes data in one or more compressed image files of sequentially arranged byte stream data. Thus, in Palevich, et al., an application requests “file opens” and “file reads” of a file system in a normal manner, and the location of the file information is determined. From the location information, a set of block data (e.g., starting block and number thereof) is specified (e.g., an I/O request) in order to obtain the data. The block data is converted by the net block driver into byte size range requests, or the like, in order to retrieve the data from a remote server in block multiples. By detecting a pattern of sequential block accesses, and using the pattern to request additional byte size range data in anticipation of future block requests, Palevich, et al. increases efficiency by increasing the amount of data requested per Hypertext Transfer Protocol (HTTP) request. Local caching of received data further increases efficiency.
In conventional methods, such as Palevich, et al., the increases in I/O efficiency are based upon increasing the amount of sequential data requested in each HTTP request and the assumption that future I/O requests will be directed to sequential data. Thus, as can be seen in Palevich, et al., merely reading additional data blocks in sequence will not increase the efficiency when the I/O requests are non-sequential.
Therefore, a need exists for handling I/O requests efficiently when the I/O requests are non-sequential. In addition, a further need exists for handling non-sequential I/O requests in consideration of storage options which have recently become available such as cloud storage.